﻿#region Vương văn hùng
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;

using DataAccess;
using Entities;
using Common;

namespace BusinessLogic
{
    public static class NhanVien
    {
        public static Entities.NhanVien[] SelectNhanVien(Entities.NhanVien nv)
        {
            Entities.NhanVien[] list = null;
            try
            {
                SqlConnection cn = DataAccess.Connection.OpenConnection();
                SqlCommand cmd = new SqlCommand(Common.Constants.NhanVien.sp_Select_NhanVien, cn);
                cmd.Parameters.Add(Common.Constants.NhanVien.HanhDong, SqlDbType.NVarChar).Value = nv.HanhDong;
                cmd.Parameters.Add(Common.Constants.NhanVien.MaNhanVien, SqlDbType.VarChar).Value = nv.MaNhanVien;
                SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                ArrayList arr = new ArrayList();
                string directory = System.Windows.Forms.Application.StartupPath.ToString() + @"\EmployeeImage";
                Common.Utilities.CreateDirectory(directory);
                while (dr.Read())
                {
                    Entities.NhanVien row = new Entities.NhanVien();
                    row.NhanVienID = int.Parse(dr[Common.Constants.NhanVien.NhanVienID].ToString());
                    row.MaNhanVien = dr[Common.Constants.NhanVien.MaNhanVien].ToString();
                    row.TenNhanVien = dr[Common.Constants.NhanVien.TenNhanVien].ToString();
                    row.NgaySinh = DateTime.Parse(dr[Common.Constants.NhanVien.NgaySinh].ToString());
                    row.GioiTinh = Boolean.Parse(dr[Common.Constants.NhanVien.GioiTinh].ToString());
                    row.MaPhongBan = dr[Common.Constants.NhanVien.MaPhongBan].ToString();
                    row.TenPhongBan = dr[Common.Constants.NhanVien.TenPhongBan].ToString();
                    row.DCThuongTru = dr[Common.Constants.NhanVien.DCThuongTru].ToString();
                    row.DCTamTru = dr[Common.Constants.NhanVien.DCTamTru].ToString();
                    row.DienThoaiCD = dr[Common.Constants.NhanVien.DienThoaiCD].ToString();
                    row.DienThoaiDD = dr[Common.Constants.NhanVien.DienThoaiDD].ToString();
                    row.Email = dr[Common.Constants.NhanVien.Email].ToString();
                    row.CMND = dr[Common.Constants.NhanVien.CMND].ToString();
                    row.NgayCap = DateTime.Parse(dr[Common.Constants.NhanVien.NgayCap].ToString());
                    row.NoiCap = dr[Common.Constants.NhanVien.NoiCap].ToString();
                    string links = System.Windows.Forms.Application.StartupPath.ToString() + @"\EmployeeImage\" + dr[Common.Constants.NhanVien.LinkImage].ToString();
                    row.LinkImage = dr[Common.Constants.NhanVien.LinkImage].ToString();
                    row.LinkImageRoot = links;
                    row.Images = null;
                    row.GhiChu = dr[Common.Constants.NhanVien.GhiChu].ToString();
                    row.Deleted = Boolean.Parse(dr[Common.Constants.NhanVien.Deleted].ToString());
                    arr.Add(row);
                }
                int n = arr.Count;
                if (n == 0)
                { 
                    list = null; 
                }
                else
                {
                    list = new Entities.NhanVien[n];
                    for (int i = 0; i < n; i++)
                    {
                        list[i] = (Entities.NhanVien)arr[i];
                    }
                }
                //xoa bo nho dong ket noi
                cmd.Connection.Dispose();
                cn.Close();
                DataAccess.Connection.CloseConnection();
            }
            catch (Exception ex)
            { 
                string s = ex.Message.ToString();
                list = null;
            }
            return list;
        }

        public static int InsertUpdate(Entities.NhanVien nv)
        {
            int rt = 0;
            try
            {
                SqlConnection cn = DataAccess.Connection.OpenConnection();
                SqlCommand cmd = new SqlCommand(Common.Constants.NhanVien.sp_InsertUpdate_NhanVien, cn);
                cmd.Parameters.Add(Common.Constants.NhanVien.HanhDong, SqlDbType.NVarChar).Value = nv.HanhDong;
                cmd.Parameters.Add(Common.Constants.NhanVien.MaNhanVien, SqlDbType.VarChar).Value = nv.MaNhanVien;
                cmd.Parameters.Add(Common.Constants.NhanVien.TenNhanVien, SqlDbType.NVarChar).Value = nv.TenNhanVien;
                cmd.Parameters.Add(Common.Constants.NhanVien.NgaySinh, SqlDbType.DateTime).Value = nv.NgaySinh;
                cmd.Parameters.Add(Common.Constants.NhanVien.GioiTinh, SqlDbType.Bit).Value = nv.GioiTinh;
                cmd.Parameters.Add(Common.Constants.NhanVien.MaPhongBan, SqlDbType.VarChar).Value = nv.MaPhongBan;
                cmd.Parameters.Add(Common.Constants.NhanVien.TenPhongBan, SqlDbType.NVarChar).Value = nv.TenPhongBan;
                cmd.Parameters.Add(Common.Constants.NhanVien.DCThuongTru, SqlDbType.NVarChar).Value = nv.DCThuongTru;
                cmd.Parameters.Add(Common.Constants.NhanVien.DCTamTru, SqlDbType.NVarChar).Value = nv.DCTamTru;
                cmd.Parameters.Add(Common.Constants.NhanVien.DienThoaiCD, SqlDbType.VarChar).Value = nv.DienThoaiCD;
                cmd.Parameters.Add(Common.Constants.NhanVien.DienThoaiDD, SqlDbType.VarChar).Value = nv.DienThoaiDD;
                cmd.Parameters.Add(Common.Constants.NhanVien.Email, SqlDbType.NVarChar).Value = nv.Email;
                cmd.Parameters.Add(Common.Constants.NhanVien.CMND, SqlDbType.NVarChar).Value = nv.CMND;
                cmd.Parameters.Add(Common.Constants.NhanVien.NgayCap, SqlDbType.DateTime).Value = nv.NgayCap;
                cmd.Parameters.Add(Common.Constants.NhanVien.NoiCap, SqlDbType.NVarChar).Value = nv.NoiCap;
                string linked = string.Empty;
                if (nv.LinkImage != string.Empty)
                {
                    linked = nv.MaNhanVien + ".jpeg";
                }
                else
                {
                    linked = string.Empty;
                }
                cmd.Parameters.Add(Common.Constants.NhanVien.LinkImage, SqlDbType.NVarChar).Value = linked;
                cmd.Parameters.Add(Common.Constants.NhanVien.GhiChu, SqlDbType.NVarChar).Value = nv.GhiChu;
                cmd.Parameters.Add(Common.Constants.NhanVien.Deleted, SqlDbType.Bit).Value = nv.Deleted;
                rt = cmd.ExecuteNonQuery();
                if (rt != 0)
                {
                    if (linked != string.Empty)
                    {
                        string links = @"\EmployeeImage\" + linked;
                        string linksRoot = System.Windows.Forms.Application.StartupPath.ToString() + links;
                        try { Common.Utilities.DeleteFile(links); }
                        catch { }
                        System.IO.MemoryStream ms = new System.IO.MemoryStream(nv.Images);
                        Bitmap bmp = new Bitmap(ms);
                        try
                        {
                            bmp.Save(linksRoot, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                        catch { }
                    }
                }
                //xoa bo nho dong ket noi
                cmd.Connection.Dispose();
                cn.Close();
                DataAccess.Connection.CloseConnection();
            }
            catch (Exception ex)
            { 
                string s = ex.Message.ToString(); 
                rt = 0; 
            }
            return rt;
        }

        public static byte[] GetImage(string linksRoot)
        {
            byte[] image = null;
            try
            {
               image= Common.Utilities.GetImage(linksRoot);
            }
            catch (Exception ex)
            { string s = ex.Message; image = null;}
            return image;
        }

        public static int Delete(Entities.NhanVien nv)
        {
            int rt = 0;
            try
            {
                SqlConnection cn = DataAccess.Connection.OpenConnection();
                SqlCommand cmd = new SqlCommand(Common.Constants.NhanVien.sp_Deleted_NhanVien, cn);
                cmd.Parameters.Add(Common.Constants.NhanVien.HanhDong, SqlDbType.VarChar).Value = nv.HanhDong;
                cmd.Parameters.Add(Common.Constants.NhanVien.MaNhanVien, SqlDbType.VarChar).Value = nv.MaNhanVien;
                rt = cmd.ExecuteNonQuery();
                if (rt != 0)
                {
                    //truyen vao ten file anh
                    Common.Utilities.DeleteFile(nv.LinkImage);
                }
                //xoa bo nho dong ket noi
                cmd.Connection.Dispose();
                cn.Close();
                DataAccess.Connection.CloseConnection();
            }
            catch (Exception ex)
            { 
                string s = ex.Message.ToString(); 
                rt = 0; 
            }
            return rt;
        }
    }
}
#endregion
